﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Xejen.Database.Entities
{
    /// <summary>
    /// 表示实体，允许设定泛型主键Id
    /// </summary>
    /// <typeparam name="TPrimaryKey">表示主键类型</typeparam>
    /// <creator>marc</creator>
    public interface IEntity<TPrimaryKey>
        where TPrimaryKey : struct
    {
        /// <summary>
        /// 表示主键Id
        /// </summary>
        TPrimaryKey Id { get; set; }

        /// <summary>
        /// 判断是否瞬态。意思是：若主键<see cref="Id"/>小于＝0，则未在数据库中存在过，若大于0，则在数据库中有数据
        /// <para>
        /// 使用场景：用于判断数据库操作时，采用更新还是插入
        /// </para>
        /// </summary>
        /// <returns></returns>
        bool IsTransient();
    }
}
